%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Project      : ZPO_2013_Program_pro_zobrazování_vlastností_obrazu
% Author       : Tomas Bambas, Tomas Hegr, Roman Jasek
% Date         : 02.05.2013
% Description  : documentation
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% basic settings for our template project
\input{includes/settings.tex}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% definition of constants: CHANGE THIS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\nazevProjektu}[0]{Program pro zobrazování vlastností obrazu}
\newcommand{\nazevPredmetu}[0]{Zpracování obrazu}
\newcommand{\datumDokumentu}[0]{02. 05. 2013}
\newcommand{\autorDokumentu}[0]{Tomáš Bambas, Tomáš Hégr, Roman Jašek}
\newcommand{\loginy}[0]{xbamba01, xhegrt00, xjasek01}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%document start
\begin{document}

% insert title page from separate file
\input{includes/titlepage.tex}

% page counter and table of contents
\setcounter{page}{1}   % reset page sounter
\pagenumbering{Roman}  % Roman numbering
\tableofcontents
\newpage
\pagenumbering{arabic} % arabic numbering

% start doing something usefull
\section{Úvod}
Tento dokument detailně popisuje řešení projektu \emph{Program pro zobrazování vlastností obrazu} do předmětu Zpracování obrazu vyučovaném na Fakultě informačních technologií Vysokého učení technického v~Brně. V~jednotlivých oddílech je uvedeno zadání projektu, nástin nastudované teorie k~problému, popis implementace řešení, ukázky uživatelského rozhraní programu a závěr.

\section{Zadání projektu}
Cílem projektu bylo implementovat program, který by byl schopen zobrazit různé údaje o~načteném obraze.

\section{Zobrazované údaje}
Nejdřív bychom chtěli popsat, které vlastnosti obrazu jsme se rozhodli v~projektu využít.

\subsection{Histogram}
Histogram distribuce barev v~obrazu je běžně používaný graf reprezentující zastoupení jednotlivých barev v~obraze. Proto jsme ho také zakomponovali do našeho projektu.

\subsection{Moment obrazu}
Moment obrazu používáme na popsání obsahu obrazu. Načítaný obraz rozdělíme na 16 rovnoměrných částí (mřížka 4x4) a pro každou část získáme dominantní základní barvu. Poté se na základě těchto barevných částí snažíme odhadnout co je v~obraze. Konkrétně pokud ve vrchní části obrazu převažuje modrá barva, je pravděpodobné, že byl tento obraz vyfocen venku a takto se na snímku projevuje modrá obloha. Dále pokud v~obraze celkově dominuje modrá barva, pokládáme jej za snímek vody nebo oblohy. Naopak pokud je v~obraze výrazně převažující zelená barva, je tento obraz s~největší pravděpodobností pořízen někde v~přírodě.

\subsection{Energie obrazu}
Energii obrazu jakožto diskrétního signálu lze spočítat podle následujícího vzorce:

\vspace{0.5cm}
\large
\centerline{$E = \sum_{n=0}^{N-1} |x[n]|^2$}
\normalsize
\vspace{0.5cm}

Energii lze spočítat pro jednotlivé barvy nebo pro celkový jas obrazu. Podle energie lze například snadno identifikovat dominantní barevné složky v~obraze.

\subsection{Rozlišení, barevná hloubka}
Mezi statistické vlastnosti obrazu jsme pro zobrazení vybrali 2 údaje - rozlišení obrazu v~pixelech a barevnou hloubku obrazu.

\subsection{Barva pixelu}
Jako poslední údaj, který zobrazujeme je barva pixelu, který se nachází na místě kurzoru myši. Tohle sice není vysloveně vlastnost celého obrazu, je to ale údaj, který je v~praxi využitelný, proto ho také zobrazujeme.

\section{Realizace projektu}
Program byl implementován v~jazyce C\#{}, grafické uživatelské rozhraní využívá frameworku WPF. Program umí zobrazit načtený obrázek, histogram pro červenou, zelenou a modrou barvu, histogram jasu obrazu, energii jednotlivých barev a jasové složky, hloubku obrazu, rozlišení obrazu, hodnotu jednotlivých pixelů obrazu a pravděpodobný obsah obrazu, jehož určení závisí na správné identifikaci dominantních barev v~jednotlivých sekcích obrazu.

\section{Uživatelské rozhraní}
\subsection{Rozvržení uživatelského rozhraní}
Grafické uživatelské rozhraní programu se skládá z~aktuálně načteného obrázku (zobrazeného vlevo), histogramu obrázku (umístěném vpravo nahoře) včetně výběru barvy, pro kterou se má histogram zobrazit, zobrazení dalších informací o~obrázku (umístěných vpravo uprostřed) a tlačítek pro načtení jiného obrázku a přepnutí zobrazování překrytí obrazu dominantní barvou (umístěných vpravo dole).

Obrázek je v~základním nastavení překryt poloprůhlednou vrstvou zobrazující dominantní barvu v~jednotlivých částech obrazu dle mřížky 4x4 části. Tato vrstva se dá schovat dvěma způsoby -- po kliknutí na některou část se vrstva zprůhlední (a po dalším kliknutí znovu zobrazí), anebo se dá zprůhlednit celá vrstva najednou pomocí tlačítka \uv{Toggle Overlay} v~pravé dolní části uživatelského rozhraní.

\subsection{Ukázka uživatelského rozhraní}
Na obrázcích \ref*{img:lena} a \ref*{img:road} v~závěru tohoto dokumentu se nachází snímky okna výsledného programu. Na obrázku \ref*{img:lena} vidíme načtený obraz a histogram červené barvy v~obraze. Na obrázku \ref*{img:road} se nalézá histogram jasové hodnoty obrazu a zvýrazněné okraje obrazu dominantní barvou. 

Na všech obrázcích se také nachází další informace o~obraze o~kterých jsme psali v~předchozím textu.

\section{Závěr}
Podařilo se nám úspěšně implementovat program, který dokáže otevřít soubor s~obrázkem a zobrazit o~něm různé informace, jako například histogram jednotlivých barev, energii, hloubku barev, hodnoty jednotlivých pixelů nebo jeho pravděpodobný obsah.

\vspace{\stretch{0.5}}

\begin{figure}[h]
\begin{center}
\includegraphics[width=\textwidth]{figures/lena.eps}
\caption{Lena a histogram červené barvy.}\label{img:lena}
\end{center}
\end{figure}

\vspace{\stretch{0.5}}

\begin{figure}[h]
\begin{center}
\includegraphics[width=\textwidth]{figures/road.eps}
\caption{Zvýraznění dominantních barev venkovního snímku.}\label{img:road}
\end{center}
\end{figure}

%~ \clearpage
%~ \bibliography{citace}

\end{document}
